import 'core-js/stable';
import 'regenerator-runtime/runtime';

import { createApp } from "vue";

// 完整引入 ElementPlus
// TODO: 后续上线时优化
import ElementPlus from "element-plus";
import zhCN from "element-plus/dist/locale/zh-cn.mjs";
import "element-plus/dist/index.css";

// 将 @element-plus/icons-vue 内所有具名导出的内容组装成一个对象 ElementPlusIconsVue
import * as ElementPlusIconsVue from "@element-plus/icons-vue";

import router from "./router";
import store from "./store";

import App from "@/App.vue";

import { has } from "@/directives/has";
// 在页面加载时检查是否是页面刷新
if (performance.navigation.type === 1) {
  // 如果是页面刷新，设置 sessionStorage 标志
  sessionStorage.setItem("isPageRefreshed", "true");
} else {
  // 不是页面刷新，可能是首次加载，清除 sessionStorage 标志
  sessionStorage.removeItem("isPageRefreshed");
}

// 监听页面关闭或刷新
window.addEventListener("beforeunload", handleBeforeUnload);

// 页面关闭或刷新时执行
function handleBeforeUnload(event) {
  // 检查 sessionStorage 中是否有刷新标志
  const isPageRefreshed = sessionStorage.getItem("isPageRefreshed");
  // 如果没有刷新标志，说明是关闭浏览器，执行退出登录
  if (!isPageRefreshed) {
    logout();
    console.log("beforeunload");
    
  }
}

function logout() {
  // 清除 localStorage 中的用户登录标记
  localStorage.removeItem("isLoggedIn");
  // 清空 Vuex store 中的用户状态
  store.commit("user/resetStore");
  const bandValue = localStorage.getItem("band");
  localStorage.clear();
  if (bandValue !== null) {
    localStorage.setItem("band", bandValue);
  }
  // 重定向到登录页面
  router.push("/login");
}

// 检查登录状态，每次页面加载时都执行
checkLoginStatus();

function checkLoginStatus() {
  const isLoggedIn = localStorage.getItem("isLoggedIn");
  const isPageRefreshed=sessionStorage.getItem("isPageRefreshed");
  // 如果标记不存在，则执行退出登录逻辑
  if (!isLoggedIn||!isPageRefreshed) {
    logout();
  }
}

// 创建应用实例
const app = createApp(App);

// 注册全局指令
app.directive("has", has);

// 注册插件
app
  .use(ElementPlus, {
    locale: zhCN,
  })
  .use(router)
  .use(store);

// 将 ElementPlusIconsVue 内的所有图标组件都全局注册上
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
  app.component(key, component);
}

// 挂载
app.mount("#app");
